NEWS
Lösung für eine Prüfung gesucht
-
Hallo zusammen, ich komme nicht weiter.
Ich habe ein Blcokly für einen Bewegungsmelder geschrieben.Wird Änderung erkannt und ist die Bewegung WAHR und ist das Licht AUS und sind wir NICHT in der hellen Tageszeit, dann Licht AN.
sonst
Wenn Bewegung ist Falsch dann Licht aus.
So weit funktioniert das alles.
Was ich zusätzlich erreichen will ist:
Befinde ich mich noch nicht im Raum, und schalte von außen per Taster das Licht an, dann will ich das Blcokyl prüft, ob das Licht vor ein paar sekunden bevor die Bewegung erkannt wurde, per Taster angeschaltet wurde. Denn wenn ich das nicht prüfen kann, dann mache ich von außen das Licht an, gehe in das Zimmer, die Bewegung wird erkannt, 3 Minuten später wenn Bewegung nicht mehr erkannt wird weil gaaaaaaanz still sitze, geht das licht wieder aus, da der Bewegungsmelder ja auf FALSCH umschaltet.Habt ihr dazu eine Lösung für mich oder auch eine Alternative?
Danke!
-
@schonwiederich sagte: schalte von außen per Taster das Licht an, dann will ich das Blcokyl prüft
Wert, Ursprung:
-
@paul53
Lieben Dank für die tolle Hilfe.
Ich habe den unteren Block von Dir genutzt.
Ich habe es dann getestet und es funktioniert. Ich habe zwar noch nicht verstanden wie "manuell_ein" ein Attribut "Ursprung" mit sich führt und wo man nachsehen kann welches was in diesem Attribut drin steht.
Gibt es das auch bei Object ID´s ? Ich kanns nicht finden.
Aber wichtig ist, es funktioniert.Den oberen Block habe ich so gelassen wie ich ihn hatte. Deinen Vorschlag verstehe ich einfach nicht. Für mich scheint es nicht logisch die Falls Bedingung die ich auf Basis der zwei Tageszeitwerte quasi als zu prüfende Bedingung bei mir drin habe in die LICHT Variable zu schreiben. Hier wird doch ein Zeitraum gegen die aktuelle Uhrzeit geprüft. Zumal Du doch dann im Folgenden prüfst ob Variable licht ungleich der Object ID Licht ist. Und dort wird doch nur wahr gegen wahr und falsch gegen falsch geprüft oder?
Aber da kann ich mich auch irren. Ich bin kein ProgrammiererDanke und viele Grüße!
-
@schonwiederich Hab es bei mir so gelöst:
Sobald die Kamera eine Bewegung erkennt geht das Licht für eine gewisse Zeit an und danach wieder aus.
Wurde das Licht bereits vorher manuell angeschaltet, so passiert nichts bzw. es geht nicht automatisch aus.
Zusätzlich prüfe ich, sofern weiterhin Bewegung erkannt wird, dass das Licht nicht nach 120 Sekunden ausgeht. -
@lessthanmore
Hi, danke. Wo in deinem Script wird denn sichergestellt das wenn vorher jemand das licht angemacht hat , dieses nicht wieder nach 120 sekunden aus geht.PS: Bei mir ist es ein "wenig anders".
Mein Ikea Bewegungsmelder habe ich so eingestellt , das er bei neu erkannter Bewegung den Zustand "Wahr" behält und sonst nach 3 Minuten auf "Falsch" springt.
Da mein Trigger durch "wurde geändert" auslöst, geht das licht auch erst aus wenn der BWM auf falsch springt. Daher brauche ich keinen timeout. -
@schonwiederich sagte: Deinen Vorschlag verstehe ich einfach nicht.
Die Variable licht wird nur wahr, wenn Bewegung UND Nacht (dunkel).
@schonwiederich sagte in Lösung für eine Prüfung gesucht:
ob Variable licht ungleich der Object ID Licht ist.
Es wird geprüft, ob der Sollzustand (Variable licht) ungleich dem Istzustand (Wert vom Datenpunkt "Licht") ist, um unnötiges Senden zu vermeiden (duty cycle).
-
@schonwiederich Über die erste Falls Abfrage, das Licht aus ist.
Allerdings gefällt mir das manuelle setzen über den Ursprung. Baue ich heute Abend mal noch ein.
Es ist bei mir aber mehr als unwahrscheinlich dass das Licht vorher automatisch angeht und ich es danach manuell anschalten möchte.
Zudem könnte ich noch Einbauen dass man die Automatik deaktiviert. Da fällt mir aber gerade nichts ein.
@paul53 Hast du da evtl. eine Idee? -
@lessthanmore sagte: Einbauen dass man die Automatik deaktiviert.
Ohne das Licht manuell einzuschalten? Dann ist ein zusätzlicher Datenpunkt erforderlich.
-
@paul53
Das mit dem Duty Cycle sparen macht sinn.
"Die Variable licht wird nur wahr, wenn Bewegung UND Nacht (dunkel)."
Damit hast Du bestimmt recht. Nur logisch liest es sich für mich im Blockly nicht.
Denn man ließt ja eiegntlich falls nicht manuell ein dann setze variable licht auf wert von Bewegungsmelder UND Zeit (dunkel) .
Logisch lesen würde ich es wenn dort nicht stünde UND Zeit dunkel sondern FALLS Zeit (dunkel).Denn der gesamt "setze licht auf" Block steht ja im "mache" des vorangestellten Falls blocks und damit erkenne ich optisch garkeine falls Zeit dunkel prüfung. Aber das ist bestimmt so in Blockly.
Ist für mich als Anfänger nur nicht leicht nachzuvollziehen.
Danke Dir -
Hallo zusammen,
ich habe mir jetzt diese Version mit Eurer Hilfe gebastelt.
Ich werde Sie jetzt mal testen und dann mit dem Ergebnis melden. Danke an alle. -
@schonwiederich
Hi alle,
Ich hatte das Programm wie oben zu sehen getestet. Erst lief es augenscheinlich gut.
Aber seit ein paar Tagen nicht mehr.
Was genau geht nicht....
Man drückt den Taster geht ins Bad und bewegt sich 3 minuten nicht dann geht das Licht aus.
Das dürfte es ja nicht da das Programm ja garnichts laufen darf da man zuvor den Taster gedrückt hat.
Wie kann ich feststellen ob die variable die ich im Programm setze auch richtig gesetzt wird? Bzw habt ihr noch eine Idee? -
@schonwiederich
Hast du beachtet, dass ein Taster beim Drücken auf false und beim Loslassen auf true (oder umgekehrt je nach Programmierung) geht?Deine Variable könnte also zweimal umschalten.
-
@schonwiederich sagte: Wie kann ich feststellen ob die variable die ich im Programm setze auch richtig gesetzt wird?
Debug-Block einbauen.
-
Hallo zusammen,
Ich war ausgefallen daher schreibe ich erst jetzt. Ich werte nicht den Taster aus sondern den Aktor der vom Taster geschaltet wird.
Das debug zeigt sauber an das die variable auf Treue und falls gesetzt wird wenn man den Taster bzw den Aktor schaltet. Dennoch geht das Licht nach 3 Minuten aus. Ich finde den Fehler nicht.
Habt ihr noch eine Idee? -
@schonwiederich sagte: Man drückt den Taster geht ins Bad und bewegt sich 3 minuten nicht dann geht das Licht aus.
Schaltet der Taster direkt das Licht oder über ein Skript?
-
@paul53
Eine homematic direktverknüpfung -
@schonwiederich sagte: Eine homematic direktverknüpfung
Dann muss es funktionieren. Die Variable manuell_ein wird korrekt gesetzt? Zwischen "BM_Bad presence" und den Licht-Aktoren gibt es keine Direktverknüpfung?
-
@paul53 nein der bm ist von Ikea und wird nur über iobroker angesprochen.
-
@paul53 Sooooo, ich glaube und hoffe ich habe nun den fehlerteufel.
Drückt man den Taster der dann den Aktor schaltet, welcher dann die variable auf True setzt, geht aber sehr schnell dabei ins Bad, so dass die bewegungserkennung das bewegungsprogramm triggert bevor die variable gesetzt werden kann, steht die variable weiter auf false. So auch zu sehen in dem Screenshot in Orange eingefärbt.
Ich denke das ist das Problem.
In kurz... Bewegung triggert, bevor die variable auf True gesetzt werden kann.Habe ich eine chance das technisch abzufangen oder geht das nur durch einweisen der Familie =
Knopf drücken, 1 Sekunde warten, rein gehen?Danke vielmals vorab.
-